iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0
Modern Web

小白大戰基礎網頁開發系列 第 26

D26 - Node.js 是甚麼?

  • 分享至 

  • xImage
  •  

Node.js

  • 一個開放源始碼(Open Source)的應用程式框架 (Web Application Framework), 擁有活躍的開發者社群
  • 蓬勃發展的套件生態系統 (package ecosystem), 是世界上最大的開源函式庫(open source libraries)生態系統
  • 專為高效率非同步(asynchronous) 服務器端語言(server-side programming) 而設計的, 因次不需延遲等待

當然, 服務器端語言不是只有 Node.js

服務器端語言是使用編程語言/框架編(programming language/frameworks)而去寫的,例如 PHPJava/JSPRuby on RailsASP.NETPythonPerlJS (Node.js) 等等, 不過這邊我們主要是會從 Node.js 著手。Web 服務器包含運行這些程序並將其 output 傳送回去。Node.js 已被各大公司企業廣泛使用, 像是 Amazon, Netflix, LinkedIn, PayPal, Uber... Node.js 解決了許多全球頂尖大規模組織的一系列產品生產所面臨的挑戰。有些與平台相關,而另一些則側重於資源利用。據 Hackernoon 報導,Netflix、Linkedin、 Paypal 都承認加載時間 (loading-time)最多可節省 60%。

Credit: https://nodejs.org/en/user-survey-report/
對此議題有興趣的你可以繼續參考這篇文章: Why we use Node.js?

  • Node.js 使用與 Chrome 相同的開源 V8 JavaScript 引擎, 有興趣的你可以參考這篇: Google Git-V8
  • Node.js 是一個執行環境 (runtime environmnet), V8是主流瀏覽器, 接著搭配一系列 C/C++ 的套件, 用於使用相同的核心語言功能運行 JavaScript 程序, 但是在瀏覽器之外
  • 使用 Node 時,你無法訪問瀏覽器的物件或是功能(例如: document (文檔)、window (窗口)、addEventListener、DOM 節點)。
  • 然而,你可以訪問用於管理 HTTP 請求、file i/o 和數據庫之間互動的功能。
  • 不可不知, 此功能是構建 REST API 的關鍵!
    node-js-architecture

Credit: node-js-architecture

Client-side vs. Server-side JavaScript

在這邊做個ClientServer差異的對比總整理:

Client-Side:

  • 大部分遵守 ECMAScript 規範標準
  • 由 Browser (瀏覽器) 解析和運行, 因此我們可以訪問 document (文檔)、window (窗口) 等
  • 使用 fetch 調用 API, 而將 HTTP 請求發送到服務器
  • 僅在網頁打開時運行
  • 處理events, 例如: 使用者點擊網頁上的按鈕

Server-Side:

  • 大部分遵守 ECMAScript 規範標準
  • 由 Node.js 解析和運行, 因此可以訪問 file I/O、數據庫 等
  • 處理來自客戶端的請求, 把 HTTP responses (響應) 傳送回去
  • 只要 Node 正在運行並且監聽, 就可以運行
  • 處理 HTTP 請求, 例如: GET/POST 等

Node.js 執行過程

  1. 安裝 Node: Download
  2. 安裝 Node 後, 可以立即在 command line 中運行它
    // 檢查 Node.js 是否安裝成功
    node -v
    
    a.使用節點(無 arguments)啟動互動式 REPL。這個 REPL 很像 Chrome 瀏覽器的 JS 控制台選項卡。
    REPL代表Read Evaluate Print Loop。它是一種允許你一次運行一行 code 的工具。REPL 風格的工具存在 於大多數程式語言中。)
  3. 用 node file.js 在當前目錄執行一個 JS 程序

明天我們會來做個簡單的 Node.js project!


上一篇
D25 - 初見 Server Side
下一篇
D27 - 實作 Node.js Project
系列文
小白大戰基礎網頁開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言